home *** CD-ROM | disk | FTP | other *** search
/ HPAVC / HPAVC CD-ROM.iso / pc / ABUSESRC.ZIP / AbuseSrc / imlib / port / sgi / sgi_sdrv.c < prev    next >
Encoding:
C/C++ Source or Header  |  1997-07-08  |  2.2 KB  |  107 lines

  1. #include <sys/ipc.h>
  2. #include <sys/shm.h>
  3. #include <signal.h>
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. #include <string.h>
  7. extern "C" {
  8. #include <dmedia/audio.h>
  9. #include <dmedia/audiofile.h>
  10. }
  11. #include <fcntl.h>
  12. #include <unistd.h>
  13. #include <sys/types.h>
  14. #include <sys/time.h>
  15. #include <bstring.h>
  16. #include <sys/ioctl.h>
  17. #include <sys/types.h>
  18. #include <sys/stat.h>
  19.  
  20. void output_sample(unsigned char *buf, int size);
  21. void sound_uninit();
  22. int sound_init();
  23.  
  24. #define BUF_SIZE 512
  25.  
  26. ALconfig audioconfig;
  27. ALport audioport;
  28.  
  29.  
  30.  
  31.  
  32. void output_samples(unsigned char *buf, int size)
  33. {
  34.   ALwritesamps(audioport,buf,size);
  35. }
  36.  
  37. #include "gen_drv.c"
  38.  
  39.  
  40.  
  41. void sound_uninit()
  42. {
  43.   ALfreeconfig(audioconfig);
  44.   ALcloseport(audioport);
  45. }
  46.  
  47. int sound_init()
  48. {
  49.   long pvbuf[4];
  50.   pvbuf[0] = AL_OUTPUT_COUNT;
  51.   pvbuf[2] = AL_MONITOR_CTL;
  52.   if (ALgetparams(AL_DEFAULT_DEVICE, pvbuf, 4) < 0) 
  53.   {    
  54.     fprintf(stderr,"sound driver : No audio hardware\n");
  55.     return 0;
  56.   }
  57.   pvbuf[0] = AL_OUTPUT_RATE;
  58.   pvbuf[1] = 11025;
  59.   if (ALsetparams(AL_DEFAULT_DEVICE,pvbuf,4) < 0)
  60.   {    
  61.     fprintf(stderr,"sound driver : Could not set sample rate\n");
  62.     return 0;
  63.   }
  64.  
  65.   ALseterrorhandler(0);
  66.   audioconfig = ALnewconfig();
  67.   if (!audioconfig)
  68.   {
  69.     fprintf(stderr,"failed to create audio config\n");
  70.     return 0;
  71.   }
  72.   else if (ALsetchannels(audioconfig,AL_MONO))
  73.   { fprintf(stderr,"sound driver : could not set audio channels\n");
  74.     return 0;
  75.   }
  76.   else if (ALsetqueuesize(audioconfig,BUF_SIZE))
  77.   { 
  78.     fprintf(stderr,"sound driver : could not set audio que size\n");
  79.     ALfreeconfig(audioconfig);
  80.     return 0;
  81.   } else if (ALsetwidth (audioconfig, AL_SAMPLE_8))
  82.   {
  83.     fprintf(stderr,"sound driver :could not set 8 bit samples\n");
  84.     ALfreeconfig(audioconfig);
  85.     return 0;
  86.   }
  87.  
  88.   audioport=ALopenport("Abuse sound driver","w",audioconfig);
  89.   if (!audioport)
  90.   {
  91.     fprintf(stderr,"sound driver : could not open audio port\n");
  92.     ALfreeconfig(audioconfig);
  93.     return 0;
  94.   }
  95.  
  96.   int i=0,j;
  97.   uchar *vd=volume_table;
  98.   for (;i<32;i++) 
  99.   {
  100.     for (j=0;j<256;j++,vd++)
  101.       *vd=(j-128)*i/31+128;
  102.   }
  103.   return 1;
  104. }
  105.  
  106.  
  107.